Skip to content

S00-00 General-AI-IDE ​

[TOC]

OpenCode ​

问题集 ​

OpenCode 安装时缺失 postinstall ​

问题:

通过 pnpm i opencode-ai -g 安装的 opencode,在 CMD 中执行 opencode 启动时报图1和图2的错误,在 Bash 中执行 opencode 启动时报图3的错误


原因分析:

这是一个非常典型且由于 pnpm 版本更新引发的“连环案”。

  1. 核心原因(图 3 指出的问题): 在新版本的 pnpm 中,出于安全考虑(防止恶意代码在安装时自动运行),默认禁用了依赖包的生命周期脚本(如 postinstall)。

  2. 为什么 CMD 会报“16 位/不兼容”错误(图 1 和图 2): opencode-ai 这个工具在安装时,需要通过 postinstall 脚本去下载或解压真正的 Windows 平台执行文件(opencode.exe)。由于 pnpm 默认拦截了该脚本,导致生成的 opencode.exe 只是一个空文件(0 字节)或不完整的占位符。Windows 系统在尝试运行一个损坏或 0 字节的 .exe 时,就会误报成“不支持的 16 位应用程序”或“版本不兼容”。

  3. 为什么 Bash 的报错不一样: Bash 运行的是该工具的外部包装脚本(通常是 Shell/Node 脚本),这个脚本在执行前先检查了环境,发现 postinstall 没运行,于是直接拦截并输出了更人性化的错误提示。


解决方案:

方法一:允许构建脚本并重新全局安装(推荐)

直接利用 pnpm 的 --allow-build 标志,明确告诉 pnpm 允许运行 opencode-ai 的安装脚本。在终端中执行以下命令:

bash
pnpm add -g opencode-ai --allow-build=opencode-ai

安装完成后,重开一个 CMD 或 Bash 窗口,再次输入 opencode 即可正常启动。

方法二:手动补救

如果你不想重新安装,也可以根据图 3 中 Bash 的提示,直接去 pnpm 的全局缓存目录中手动触发那个被遗漏的脚本。

  1. 打开 Git Bash 或 CMD。

  2. 复制并运行以下命令,直接进入该包的全局安装路径:

    bash
    cd C:\Users\Mr\AppData\Local\pnpm\global\5\.pnpm\opencode-ai@1.17.11\node_modules\opencode-ai
  3. 手动执行它的后期安装脚本:

    bash
    node postinstall.mjs
  4. 脚本执行完毕后(它会把真正的 opencode.exe 下载/生成好),即可在任意地方正常使用 opencode 命令了。


注意事项:

  1. Bash 中运行 opencode 会报 EUNKNOWN: unknown error, read 错误

    原因分析:

    opencode 是一个包含精美 TUI(终端用户界面)的交互式 AI 工具。这类工具需要实时捕获你的键盘输入(比如按 Tab 键切换模式、上下键选择菜单)。

    然而,Windows 上的 Git Bash 默认采用的是模拟 Unix 环境的 mintty 终端,它并不是原生的 Windows 控制台。当 Node.js 或底层程序尝试在 Git Bash 中以“原始模式(Raw Mode)”读取你的键盘输入(stdin)时,由于管道通信机制不兼容,就会直接崩掉并抛出 unknown error, read 错误。

    解决方案:

    针对这种 TUI 工具在 Windows 上的环境限制,有两种解决方法:

    • 方法一:换用原生终端(推荐)

      这是最省心、体验最好的方式。AI 编程代理这类复杂的终端交互工具,在 Windows 原生控制台下表现最稳定。

      • 直接打开 Windows 自带的 CMD、PowerShell 或者 Windows Terminal。

      • 直接输入命令启动:

        bash
        opencode
    • 方法二:在 Git Bash 中使用 winpty 桥接

      如果你有强烈的强迫症,必须要在当前的 Git Bash 里运行它,可以在命令前面加上 winpty,强行帮它套一层原生控制台的壳:

      bash
      winpty opencode

      💡 小贴士:如果使用 winpty 启动后界面渲染有些许错位,还是建议直接投奔 PowerShell 或 Windows Terminal,现在的 Windows 新终端对这类 AI TUI 工具的支持非常完美!